package ljl.alg.jianzhioffer.round3.easy;

public class _11_min_array {

    /**
     * 找到中间位置
     * 1、比右边大，l 需要改成 mid + 1
     * 2、比右边小，mid 可能是最小，也可能在左边，r 更新成 mid
     * 3、和最右边相等，把 r 减 1，去掉一个
     * */
    public int minArray(int[] numbers) {
        int l = 0, r = numbers.length - 1;
        while (l < r) {
            int mid = (l + r) >>> 1;
            if (numbers[mid] > numbers[r]) {
                l = mid + 1;
            } else if (numbers[mid] == numbers[r]){
                r--;
            } else {
                r = mid;
            }
        }
        return numbers[l];
    }

}
